C++11之std::function和std::bind 使用
实现延时调用:
1 | #include<iostream>// std::cout |
由上边代码定义std::function<int(int)> fr2,那么fr2就可以代表返回值和参数表相同的一类函数。可以看出fr2保存了指代的函数,可以在之后的程序过程中调用。这种用法在实际编程中是很常见的。
std::bind用来将可调用对象与其参数一起进行绑定。绑定后可以使用std::function进行保存,并延迟到我们需要的时候调用:
(1) 将可调用对象与其参数绑定成一个仿函数;
(2) 可绑定部分参数。
在绑定部分参数的时候,通过使用std::placeholders来决定空位参数将会是调用发生时的第几个参数。
1 | #include<iostream>// std::cout |
回调使用
- 普通回调函数
1 | #include<iostream>// std::cout |
输出结果为:
callBackP 99
- 类成员函数为静态的
1 | #include<iostream>// std::cout |
输出结果为:
B::callBack : 99
- 普通类成员函数
1 | #include<iostream>// std::cout |
输出结果为:
B::callBack : 99